package xdu.lz.stage3_classloader.chapter4;

public class RuntimePackage {
    public static void main(String[] args) throws Exception {
        SimpleClassLoader simpleClassLoader = new SimpleClassLoader("SimpleClassLoader");
        simpleClassLoader.setDir("F:\\IDEA\\IDEA\\workspace\\multi-threaded-concurrency\\myclassloader4");
        Class<?> clazz = simpleClassLoader.loadClass("xdu.lz.stage3_classloader.chapter4.SimpleObject");
        //会报错 ，因为加载并运行RuntimePackage.main是有系统加载器加载的
        //而clazz.getClassLoader()是由自定义loader4加载的，是系统的子类，运行时父加载器是看不到子加载器的类的
        //不同命名空间下的类加载器之间更不可访问

        //Boot.Etc.App.xdu.lz.stage3_classloader.chapter4.RuntimePackage运行main是属于系统加载器App的
        //Boot.Etc.App.simpleClassLoader.xdu.lz.stage3_classloader
        // .chapter4.SimpleObject是属于simpleClassLoader加载器的，是App加载器的子类
        //运行时父加载器是看不到子加载器的类的，不同命名空间下的类加载器之间更不可访问
        /**
         *
         *  xdu.lz.stage3_classloader.chapter4.SimpleObject
         *  cannot be cast to
         *  xdu.lz.stage3_classloader.chapter4.SimpleObject
         *
         *
         */
        SimpleObject sc = (SimpleObject) clazz.newInstance();

    }
}
